Continuing with his standard pace of approximately one new version per month,
Conrad released a new minor release of
Armadillo a few days ago. As before, I had created a GitHub-only pre-release which was tested against all eighty-seven (!!)
CRAN dependents of our
RcppArmadillo package and then uploaded RcppArmadillo 0.4.450.0 to
CRAN.
The
CRAN maintainers pointed out that under the R-development release, a NOTE was issued concerning the C-library's
rand()
call. This is a pretty new NOTE, but it means using the (sometimes poor quality)
rand()
generator is now a no-no. Now,
Armadillo being as robustly engineered as it is offers a
new random number generator based on C++11 as well as a fallback generator for those unfortunate enough to live with an older C++98 compiler. (I would like to note here that I find Conrad's continued support for both C++11, offering very useful modern language idioms, as well as the fallback code for continued deployment and usage by those constrained in their choice of compilers rather exemplary --- because contrary to what some people may claim, it is
not a matter of one or the other. C++ always was, and continues to be, a multi-paradigm language which can be supported easily by several standard. But I digress...)
In any event, one cannot argue with
CRAN about their prescription of a C++98 compiler. So Conrad and I discussed this over email, and came up with a scheme where a user-package (such as
RcppArmadillo) can provide an alternate generator which
Armadillo then deploys. I implemented a first solution which was then altered / reflected by Conrad in a revised version 4.450.1 of
Armadillo. I packaged, and now uploaded, that version as
RcppArmadillo 0.4.450.1.0 to both
CRAN and into
Debian.
Besides the RNG change already discussed, this release brings a few smaller changes from the
Armadillo side. These are detailed below in the extract from the NEWS file. On the
RcppArmadillo side, we now have support for
pkgKitten which is both very exciting and likely the topic of another blog post with an example of
creating an RcppArmadillo package that purrs. In the process, I overhauled and polished how new packages are created by
RcppArmadillo.package.skeleton()
. An upcoming blog post may provide an example.
Changes in RcppArmadillo version 0.4.450.1.0 (2014-09-21)
-
Upgraded to Armadillo release Version 4.450.1 (Spring Hill Fort)
-
faster handling of matrix transposes within compound expressions
-
expanded
symmatu()
/symmatl()
to optionally disable taking the complex conjugate of elements
-
expanded
sort_index()
to handle complex vectors
-
expanded the
gmm_diag
class with functions to generate random samples
-
A new random-number implementation for Armadillo uses the RNG from R as a fallback (when C++11 is not selected so the C++11-based RNG is unavailable) which avoids using the older C++98-based
std::rand
-
The
RcppArmadillo.package.skeleton()
function was updated to only set an "Imports:" for Rcpp, but not RcppArmadillo which (as a template library) needs only LinkingTo:
-
The
RcppArmadillo.package.skeleton()
function will now prefer pkgKitten::kitten()
over package.skeleton()
in order to create a working package which passes R CMD check
.
-
The pkgKitten package is now a
Suggests:
-
A manual page was added to provide documentation for the functions provided by the skeleton package.
-
A small update was made to the package manual page.
Courtesy of
CRANberries, there is also a diffstat report for the
most recent release. As always, more detailed information is on the
RcppArmadillo page. Questions, comments etc should go to the
rcpp-devel mailing list off the
R-Forge page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.